1 Mushroom Data

This dataset provides various characteristics of mushrooms, which can be useful in identifying and classifying them. Each row represents a specific mushroom, and the columns detail its physical attributes and ecological traits.

# Load the required library
library(dplyr)

# Read the data
mushroom <- read.csv("https://ecoleman451.github.io/ecoleman/w10/mushroom-data.txt")

The following dashboard and story points were designed based on the following considerations:

Season Filter: Each sheet in the dashboard and story point has a Season filter, offering viewers the flexibility to delve into data specific to different seasons, facilitating seasonal analysis and comparison.

Table Chart: Average Cap Diameter per Class by Habitat: This chart provides a detailed insight into the average cap diameter across different classes of mushrooms, categorized by habitat. By color-coding each habitat, viewers can easily discern trends and patterns associated with environmental conditions.

Table Chart: Average Measurements Across Classes by Stem Color: Offering a comprehensive overview, this table chart displays average measurements (such as stem width and height) across various mushroom classes, distinguished by stem color. The color-coded values enable viewers to identify associations between mushroom classes and their physical attributes.

Histogram: Total Stem Height Distribution by Cap Diameter and Cap Shape: This histogram offers a visual representation of the distribution of total stem height, considering both cap diameter and cap shape. By color-coding each cap shape, viewers can gain insights into how stem height varies across different cap shapes and sizes.

Dual Lines Chart: Average Stem Width and Stem Height Across Cap Diameter Lengths: This chart presents an in-depth analysis of the average stem width and stem height across different lengths of cap diameter. By visualizing these relationships simultaneously, viewers can discern correlations and variations between cap diameter and stem dimensions.

Scatter Plot: Average Stem Width vs. Average Stem Height with Cap Diameter Color Dependency: This scatter plot provides a comprehensive view of the relationship between average stem width and height, with cap diameter represented by color.

By incorporating visualizations and interactive features, this dashboard and its story points aim to empower viewers with the tools and insights for data analysis.



2 Tableau Story Points

In addition to the detailed dashboard, a complementary story point has been crafted to provide a guided narrative based on the previous dashboard’s insights. Each visual sheet within the story point is accompanied by a brief caption, offering context and highlighting key findings. This approach enables viewers to explore each visual sheet independently, allowing them to draw their own conclusions and insights from the data presented. Through this structured storytelling approach, viewers can engage with the data at their own pace, uncovering patterns tailored to their interests and goals.


LS0tDQp0aXRsZTogIlRhYmxlYXUgRGFzaGJvYXJkIg0KYXV0aG9yOiAiRWR3YXJkIENvbGVtYW4iDQpkYXRlOiAiV2VzdCBDaGVzdGVyIFVuaXZlcnNpdHkiDQpvdXRwdXQ6IA0KICBodG1sX2RvY3VtZW50OiANCiAgICB0b2M6IHllcw0KICAgIHRvY19kZXB0aDogNA0KICAgIHRvY19mbG9hdDogbm8NCiAgICBjb2RlX2ZvbGRpbmc6IGhpZGUNCiAgICBjb2RlX2Rvd25sb2FkOiB5ZXMNCiAgICBzbW9vdGhfc2Nyb2xsOiB5ZXMNCiAgICBudW1iZXJfc2VjdGlvbnM6IHllcw0KICAgIHRoZW1lOiByZWFkYWJsZQ0KLS0tDQogICAgICANCjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+DQpkaXYjVE9DIGxpIHsNCiAgICBsaXN0LXN0eWxlOm5vbmU7DQogICAgYmFja2dyb3VuZC1pbWFnZTpub25lOw0KICAgIGJhY2tncm91bmQtcmVwZWF0Om5vbmU7DQogICAgYmFja2dyb3VuZC1wb3NpdGlvbjowOw0KfQ0KaDEudGl0bGUgew0KICBmb250LXNpemU6IDI0cHg7DQogIGNvbG9yOiBEYXJrUmVkOw0KICB0ZXh0LWFsaWduOiBjZW50ZXI7DQp9DQpoNC5hdXRob3IgeyANCiAgLyogSGVhZGVyIDQgLSBhbmQgdGhlIGF1dGhvciBhbmQgZGF0YSBoZWFkZXJzIHVzZSB0aGlzIHRvbyAgKi8NCiAgZm9udC1zaXplOiAxOHB4Ow0KICBmb250LWZhbWlseTogIlRpbWVzIE5ldyBSb21hbiIsIFRpbWVzLCBzZXJpZjsNCiAgY29sb3I6IERhcmtSZWQ7DQogIHRleHQtYWxpZ246IGNlbnRlcjsNCn0NCmg0LmRhdGUgeyANCiAgLyogSGVhZGVyIDQgLSBhbmQgdGhlIGF1dGhvciBhbmQgZGF0YSBoZWFkZXJzIHVzZSB0aGlzIHRvbyAgKi8NCiAgZm9udC1zaXplOiAxOHB4Ow0KICBmb250LWZhbWlseTogIlRpbWVzIE5ldyBSb21hbiIsIFRpbWVzLCBzZXJpZjsNCiAgY29sb3I6IERhcmtCbHVlOw0KICB0ZXh0LWFsaWduOiBjZW50ZXI7DQp9DQpoMSB7IA0KICAgIC8qIEhlYWRlciAzIC0gYW5kIHRoZSBhdXRob3IgYW5kIGRhdGEgaGVhZGVycyB1c2UgdGhpcyB0b28gICovDQogICAgZm9udC1zaXplOiAyMnB4Ow0KICAgIGZvbnQtZmFtaWx5OiAiVGltZXMgTmV3IFJvbWFuIiwgVGltZXMsIHNlcmlmOw0KICAgIGNvbG9yOiBkYXJrcmVkOw0KICAgIHRleHQtYWxpZ246IGNlbnRlcjsNCn0NCmgyIHsgDQogICAgLyogSGVhZGVyIDMgLSBhbmQgdGhlIGF1dGhvciBhbmQgZGF0YSBoZWFkZXJzIHVzZSB0aGlzIHRvbyAgKi8NCiAgICBmb250LXNpemU6IDE4cHg7DQogICAgZm9udC1mYW1pbHk6ICJUaW1lcyBOZXcgUm9tYW4iLCBUaW1lcywgc2VyaWY7DQogICAgY29sb3I6IG5hdnk7DQogICAgdGV4dC1hbGlnbjogbGVmdDsNCn0NCmgzIHsgDQogICAgLyogSGVhZGVyIDMgLSBhbmQgdGhlIGF1dGhvciBhbmQgZGF0YSBoZWFkZXJzIHVzZSB0aGlzIHRvbyAgKi8NCiAgICBmb250LXNpemU6IDE1cHg7DQogICAgZm9udC1mYW1pbHk6ICJUaW1lcyBOZXcgUm9tYW4iLCBUaW1lcywgc2VyaWY7DQogICAgY29sb3I6IGRhcmtyZWQ7DQogICAgZm9udC1mYWNlOiBib2xkOw0KICAgIHRleHQtYWxpZ246IGxlZnQ7DQp9DQpoNCB7IA0KICAgIC8qIEhlYWRlciA0IC0gYW5kIHRoZSBhdXRob3IgYW5kIGRhdGEgaGVhZGVycyB1c2UgdGhpcyB0b28gICovDQogICAgZm9udC1zaXplOiAxOHB4Ow0KICAgIGZvbnQtZmFtaWx5OiAiVGltZXMgTmV3IFJvbWFuIiwgVGltZXMsIHNlcmlmOw0KICAgIGNvbG9yOiBkYXJrcmVkOw0KICAgIHRleHQtYWxpZ246IGxlZnQ7DQp9DQogICAvKiBjZW50ZXIgbWFwcyB1c2luZyBjaHVuayBvcHRpb246IGZpZy5hbGlnbj0nY2VudGVyJyAqLw0KLmh0bWwtd2lkZ2V0IHsNCiAgICBtYXJnaW46IGF1dG87DQp9DQo8L3N0eWxlPg0KDQpgYGB7ciBzZXR1cCwgaW5jbHVkZT1GQUxTRX0NCmtuaXRyOjpvcHRzX2NodW5rJHNldChlY2hvID0gVFJVRSwgICAgICAgDQogICAgICAgICAgICAgICAgICAgICAgd2FybmluZyA9IEZBTFNFLCAgIA0KICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IFRSVUUsICAgDQogICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSA9IEZBTFNFLA0KICAgICAgICAgICAgICAgICAgICAgIGNvbW1lbnQgPSBOQSkNCmBgYA0KDQpcDQoNCiMgTXVzaHJvb20gRGF0YQ0KPHVsPg0KICA8bGk+PGI+Y2xhc3M6PC9iPiBUaGUgY2xhc3NpZmljYXRpb24gb2YgdGhlIG11c2hyb29tIChlLmcuLCBlZGlibGUgb3IgcG9pc29ub3VzKS48L2xpPg0KICA8bGk+PGI+Y2FwLmRpYW1ldGVyOjwvYj4gRGlhbWV0ZXIgb2YgdGhlIG11c2hyb29tIGNhcC48L2xpPg0KICA8bGk+PGI+Y2FwLnNoYXBlOjwvYj4gU2hhcGUgb2YgdGhlIG11c2hyb29tIGNhcC48L2xpPg0KICA8bGk+PGI+Y2FwLnN1cmZhY2U6PC9iPiBTdXJmYWNlIHRleHR1cmUgb2YgdGhlIG11c2hyb29tIGNhcC48L2xpPg0KICA8bGk+PGI+Y2FwLmNvbG9yOjwvYj4gQ29sb3Igb2YgdGhlIG11c2hyb29tIGNhcC48L2xpPg0KICA8bGk+PGI+ZG9lcy5icnVpc2Uub3IuYmxlZWQ6PC9iPiBJbmRpY2F0ZXMgaWYgdGhlIG11c2hyb29tIGJydWlzZXMgb3IgYmxlZWRzLjwvbGk+DQogIDxsaT48Yj5naWxsLmF0dGFjaG1lbnQ6PC9iPiBIb3cgdGhlIGdpbGxzIGFyZSBhdHRhY2hlZCB0byB0aGUgbXVzaHJvb20uPC9saT4NCiAgPGxpPjxiPmdpbGwuc3BhY2luZzo8L2I+IFNwYWNpbmcgYmV0d2VlbiB0aGUgZ2lsbHMuPC9saT4NCiAgPGxpPjxiPmdpbGwuY29sb3I6PC9iPiBDb2xvciBvZiB0aGUgZ2lsbHMuPC9saT4NCiAgPGxpPjxiPnN0ZW0uaGVpZ2h0OjwvYj4gSGVpZ2h0IG9mIHRoZSBtdXNocm9vbSBzdGVtLjwvbGk+DQogIDxsaT48Yj5zdGVtLndpZHRoOjwvYj4gV2lkdGggb2YgdGhlIG11c2hyb29tIHN0ZW0uPC9saT4NCiAgPGxpPjxiPnN0ZW0ucm9vdDo8L2I+IFR5cGUgb2Ygcm9vdCBzdHJ1Y3R1cmUgdGhlIHN0ZW0gaGFzLjwvbGk+DQogIDxsaT48Yj5zdGVtLnN1cmZhY2U6PC9iPiBTdXJmYWNlIHRleHR1cmUgb2YgdGhlIG11c2hyb29tIHN0ZW0uPC9saT4NCiAgPGxpPjxiPnN0ZW0uY29sb3I6PC9iPiBDb2xvciBvZiB0aGUgbXVzaHJvb20gc3RlbS48L2xpPg0KICA8bGk+PGI+dmVpbC50eXBlOjwvYj4gVHlwZSBvZiB2ZWlsIGNvdmVyaW5nIHRoZSBtdXNocm9vbS48L2xpPg0KICA8bGk+PGI+dmVpbC5jb2xvcjo8L2I+IENvbG9yIG9mIHRoZSB2ZWlsLjwvbGk+DQogIDxsaT48Yj5oYXMucmluZzo8L2I+IEluZGljYXRlcyBpZiB0aGUgbXVzaHJvb20gaGFzIGEgcmluZy48L2xpPg0KICA8bGk+PGI+cmluZy50eXBlOjwvYj4gVHlwZSBvZiByaW5nIHRoZSBtdXNocm9vbSBoYXMuPC9saT4NCiAgPGxpPjxiPnNwb3JlLnByaW50LmNvbG9yOjwvYj4gQ29sb3Igb2YgdGhlIG11c2hyb29tJ3Mgc3BvcmUgcHJpbnQuPC9saT4NCiAgPGxpPjxiPmhhYml0YXQ6PC9iPiBUaGUgaGFiaXRhdCB3aGVyZSB0aGUgbXVzaHJvb20gaXMgZm91bmQuPC9saT4NCiAgPGxpPjxiPnNlYXNvbjo8L2I+IFNlYXNvbiB3aGVuIHRoZSBtdXNocm9vbSBpcyB0eXBpY2FsbHkgZm91bmQuPC9saT4NCjwvdWw+DQpUaGlzIGRhdGFzZXQgcHJvdmlkZXMgdmFyaW91cyBjaGFyYWN0ZXJpc3RpY3Mgb2YgbXVzaHJvb21zLCB3aGljaCBjYW4gYmUgdXNlZnVsIGluIGlkZW50aWZ5aW5nIGFuZCBjbGFzc2lmeWluZyB0aGVtLiBFYWNoIHJvdyByZXByZXNlbnRzIGEgc3BlY2lmaWMgbXVzaHJvb20sIGFuZCB0aGUgY29sdW1ucyBkZXRhaWwgaXRzIHBoeXNpY2FsIGF0dHJpYnV0ZXMgYW5kIGVjb2xvZ2ljYWwgdHJhaXRzLg0KYGBge3J9DQojIExvYWQgdGhlIHJlcXVpcmVkIGxpYnJhcnkNCmxpYnJhcnkoZHBseXIpDQoNCiMgUmVhZCB0aGUgZGF0YQ0KbXVzaHJvb20gPC0gcmVhZC5jc3YoImh0dHBzOi8vZWNvbGVtYW40NTEuZ2l0aHViLmlvL2Vjb2xlbWFuL3cxMC9tdXNocm9vbS1kYXRhLnR4dCIpDQpgYGANClRoZSBmb2xsb3dpbmcgZGFzaGJvYXJkIGFuZCBzdG9yeSBwb2ludHMgd2VyZSBkZXNpZ25lZCBiYXNlZCBvbiB0aGUgZm9sbG93aW5nIGNvbnNpZGVyYXRpb25zOg0KICANCiAgU2Vhc29uIEZpbHRlcjogRWFjaCBzaGVldCBpbiB0aGUgZGFzaGJvYXJkIGFuZCBzdG9yeSBwb2ludCBoYXMgYSBTZWFzb24gZmlsdGVyLCBvZmZlcmluZyB2aWV3ZXJzIHRoZSBmbGV4aWJpbGl0eSB0byBkZWx2ZSBpbnRvIGRhdGEgc3BlY2lmaWMgdG8gZGlmZmVyZW50IHNlYXNvbnMsIGZhY2lsaXRhdGluZyBzZWFzb25hbCBhbmFseXNpcyBhbmQgY29tcGFyaXNvbi4NCg0KICBUYWJsZSBDaGFydDogQXZlcmFnZSBDYXAgRGlhbWV0ZXIgcGVyIENsYXNzIGJ5IEhhYml0YXQ6IFRoaXMgY2hhcnQgcHJvdmlkZXMgYSBkZXRhaWxlZCBpbnNpZ2h0IGludG8gdGhlIGF2ZXJhZ2UgY2FwIGRpYW1ldGVyIGFjcm9zcyBkaWZmZXJlbnQgY2xhc3NlcyBvZiBtdXNocm9vbXMsIGNhdGVnb3JpemVkIGJ5IGhhYml0YXQuIEJ5IGNvbG9yLWNvZGluZyBlYWNoIGhhYml0YXQsIHZpZXdlcnMgY2FuIGVhc2lseSBkaXNjZXJuIHRyZW5kcyBhbmQgcGF0dGVybnMgYXNzb2NpYXRlZCB3aXRoIGVudmlyb25tZW50YWwgY29uZGl0aW9ucy4NCg0KICBUYWJsZSBDaGFydDogQXZlcmFnZSBNZWFzdXJlbWVudHMgQWNyb3NzIENsYXNzZXMgYnkgU3RlbSBDb2xvcjogT2ZmZXJpbmcgYSBjb21wcmVoZW5zaXZlIG92ZXJ2aWV3LCB0aGlzIHRhYmxlIGNoYXJ0IGRpc3BsYXlzIGF2ZXJhZ2UgbWVhc3VyZW1lbnRzIChzdWNoIGFzIHN0ZW0gd2lkdGggYW5kIGhlaWdodCkgYWNyb3NzIHZhcmlvdXMgbXVzaHJvb20gY2xhc3NlcywgZGlzdGluZ3Vpc2hlZCBieSBzdGVtIGNvbG9yLiBUaGUgY29sb3ItY29kZWQgdmFsdWVzIGVuYWJsZSB2aWV3ZXJzIHRvIGlkZW50aWZ5IGFzc29jaWF0aW9ucyBiZXR3ZWVuIG11c2hyb29tIGNsYXNzZXMgYW5kIHRoZWlyIHBoeXNpY2FsIGF0dHJpYnV0ZXMuDQoNCiAgSGlzdG9ncmFtOiBUb3RhbCBTdGVtIEhlaWdodCBEaXN0cmlidXRpb24gYnkgQ2FwIERpYW1ldGVyIGFuZCBDYXAgU2hhcGU6IFRoaXMgaGlzdG9ncmFtIG9mZmVycyBhIHZpc3VhbCByZXByZXNlbnRhdGlvbiBvZiB0aGUgZGlzdHJpYnV0aW9uIG9mIHRvdGFsIHN0ZW0gaGVpZ2h0LCBjb25zaWRlcmluZyBib3RoIGNhcCBkaWFtZXRlciBhbmQgY2FwIHNoYXBlLiBCeSBjb2xvci1jb2RpbmcgZWFjaCBjYXAgc2hhcGUsIHZpZXdlcnMgY2FuIGdhaW4gaW5zaWdodHMgaW50byBob3cgc3RlbSBoZWlnaHQgdmFyaWVzIGFjcm9zcyBkaWZmZXJlbnQgY2FwIHNoYXBlcyBhbmQgc2l6ZXMuDQoNCiAgRHVhbCBMaW5lcyBDaGFydDogQXZlcmFnZSBTdGVtIFdpZHRoIGFuZCBTdGVtIEhlaWdodCBBY3Jvc3MgQ2FwIERpYW1ldGVyIExlbmd0aHM6IFRoaXMgY2hhcnQgcHJlc2VudHMgYW4gaW4tZGVwdGggYW5hbHlzaXMgb2YgdGhlIGF2ZXJhZ2Ugc3RlbSB3aWR0aCBhbmQgc3RlbSBoZWlnaHQgYWNyb3NzIGRpZmZlcmVudCBsZW5ndGhzIG9mIGNhcCBkaWFtZXRlci4gQnkgdmlzdWFsaXppbmcgdGhlc2UgcmVsYXRpb25zaGlwcyBzaW11bHRhbmVvdXNseSwgdmlld2VycyBjYW4gZGlzY2VybiBjb3JyZWxhdGlvbnMgYW5kIHZhcmlhdGlvbnMgYmV0d2VlbiBjYXAgZGlhbWV0ZXIgYW5kIHN0ZW0gZGltZW5zaW9ucy4NCg0KICBTY2F0dGVyIFBsb3Q6IEF2ZXJhZ2UgU3RlbSBXaWR0aCB2cy4gQXZlcmFnZSBTdGVtIEhlaWdodCB3aXRoIENhcCBEaWFtZXRlciBDb2xvciBEZXBlbmRlbmN5OiBUaGlzIHNjYXR0ZXIgcGxvdCBwcm92aWRlcyBhIGNvbXByZWhlbnNpdmUgdmlldyBvZiB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gYXZlcmFnZSBzdGVtIHdpZHRoIGFuZCBoZWlnaHQsIHdpdGggY2FwIGRpYW1ldGVyIHJlcHJlc2VudGVkIGJ5IGNvbG9yLg0KDQogIEJ5IGluY29ycG9yYXRpbmcgdmlzdWFsaXphdGlvbnMgYW5kIGludGVyYWN0aXZlIGZlYXR1cmVzLCB0aGlzIGRhc2hib2FyZCBhbmQgaXRzIHN0b3J5IHBvaW50cyBhaW0gdG8gZW1wb3dlciB2aWV3ZXJzIHdpdGggdGhlIHRvb2xzIGFuZCBpbnNpZ2h0cyBmb3IgZGF0YSBhbmFseXNpcy4NCg0KPHRhYmxlIGJvcmRlciA9IDAgYm9yZGVyY29sb3I9ImRhcmtncmVlbiIgYmdjb2xvcj0nI2Y2ZjZmNicgIHdpZHRoPTExMCUgIGFsaWduID0gY2VudGVyPg0KPHRyPg0KPHRkPg0KDQo8ZGl2IGNsYXNzPSd0YWJsZWF1UGxhY2Vob2xkZXInIGlkPSd2aXoxNzEyNzkyNTA2ODY2JyBzdHlsZT0ncG9zaXRpb246IHJlbGF0aXZlJz48bm9zY3JpcHQ+PGEgaHJlZj0nIyc+PGltZyBhbHQ9J0Rhc2hib2FyZCAxICcgc3JjPSdodHRwczomIzQ3OyYjNDc7cHVibGljLnRhYmxlYXUuY29tJiM0NztzdGF0aWMmIzQ3O2ltYWdlcyYjNDc7VGEmIzQ3O1RhYmxlYXVTdG9yeUJvYXJkXzE3MTI3ODkwNDU4NjYwJiM0NztEYXNoYm9hcmQxJiM0NzsxX3Jzcy5wbmcnIHN0eWxlPSdib3JkZXI6IG5vbmUnIC8+PC9hPjwvbm9zY3JpcHQ+PG9iamVjdCBjbGFzcz0ndGFibGVhdVZpeicgIHN0eWxlPSdkaXNwbGF5Om5vbmU7Jz48cGFyYW0gbmFtZT0naG9zdF91cmwnIHZhbHVlPSdodHRwcyUzQSUyRiUyRnB1YmxpYy50YWJsZWF1LmNvbSUyRicgLz4gPHBhcmFtIG5hbWU9J2VtYmVkX2NvZGVfdmVyc2lvbicgdmFsdWU9JzMnIC8+IDxwYXJhbSBuYW1lPSdzaXRlX3Jvb3QnIHZhbHVlPScnIC8+PHBhcmFtIG5hbWU9J25hbWUnIHZhbHVlPSdUYWJsZWF1U3RvcnlCb2FyZF8xNzEyNzg5MDQ1ODY2MCYjNDc7RGFzaGJvYXJkMScgLz48cGFyYW0gbmFtZT0ndGFicycgdmFsdWU9J25vJyAvPjxwYXJhbSBuYW1lPSd0b29sYmFyJyB2YWx1ZT0neWVzJyAvPjxwYXJhbSBuYW1lPSdzdGF0aWNfaW1hZ2UnIHZhbHVlPSdodHRwczomIzQ3OyYjNDc7cHVibGljLnRhYmxlYXUuY29tJiM0NztzdGF0aWMmIzQ3O2ltYWdlcyYjNDc7VGEmIzQ3O1RhYmxlYXVTdG9yeUJvYXJkXzE3MTI3ODkwNDU4NjYwJiM0NztEYXNoYm9hcmQxJiM0NzsxLnBuZycgLz4gPHBhcmFtIG5hbWU9J2FuaW1hdGVfdHJhbnNpdGlvbicgdmFsdWU9J3llcycgLz48cGFyYW0gbmFtZT0nZGlzcGxheV9zdGF0aWNfaW1hZ2UnIHZhbHVlPSd5ZXMnIC8+PHBhcmFtIG5hbWU9J2Rpc3BsYXlfc3Bpbm5lcicgdmFsdWU9J3llcycgLz48cGFyYW0gbmFtZT0nZGlzcGxheV9vdmVybGF5JyB2YWx1ZT0neWVzJyAvPjxwYXJhbSBuYW1lPSdkaXNwbGF5X2NvdW50JyB2YWx1ZT0neWVzJyAvPjxwYXJhbSBuYW1lPSdsYW5ndWFnZScgdmFsdWU9J2VuLVVTJyAvPjxwYXJhbSBuYW1lPSdmaWx0ZXInIHZhbHVlPSdwdWJsaXNoPXllcycgLz48L29iamVjdD48L2Rpdj4gICAgICAgICAgICAgICAgDQo8c2NyaXB0IHR5cGU9J3RleHQvamF2YXNjcmlwdCc+ICAgICAgICAgICAgICAgICAgICB2YXIgZGl2RWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd2aXoxNzEyNzkyNTA2ODY2Jyk7ICAgICAgICAgICAgICAgICAgICB2YXIgdml6RWxlbWVudCA9IGRpdkVsZW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ29iamVjdCcpWzBdOyAgICAgICAgICAgICAgICAgICAgaWYgKCBkaXZFbGVtZW50Lm9mZnNldFdpZHRoID4gODAwICkgeyB2aXpFbGVtZW50LnN0eWxlLndpZHRoPScxMDAlJzt2aXpFbGVtZW50LnN0eWxlLmhlaWdodD0oZGl2RWxlbWVudC5vZmZzZXRXaWR0aCowLjc1KSsncHgnO30gZWxzZSBpZiAoIGRpdkVsZW1lbnQub2Zmc2V0V2lkdGggPiA1MDAgKSB7IHZpekVsZW1lbnQuc3R5bGUud2lkdGg9JzEwMCUnO3ZpekVsZW1lbnQuc3R5bGUuaGVpZ2h0PShkaXZFbGVtZW50Lm9mZnNldFdpZHRoKjAuNzUpKydweCc7fSBlbHNlIHsgdml6RWxlbWVudC5zdHlsZS53aWR0aD0nMTAwJSc7dml6RWxlbWVudC5zdHlsZS5oZWlnaHQ9JzE1MjdweCc7fSAgICAgICAgICAgICAgICAgICAgIHZhciBzY3JpcHRFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7ICAgICAgICAgICAgICAgICAgICBzY3JpcHRFbGVtZW50LnNyYyA9ICdodHRwczovL3B1YmxpYy50YWJsZWF1LmNvbS9qYXZhc2NyaXB0cy9hcGkvdml6X3YxLmpzJzsgICAgICAgICAgICAgICAgICAgIHZpekVsZW1lbnQucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoc2NyaXB0RWxlbWVudCwgdml6RWxlbWVudCk7ICAgICAgICAgICAgICAgIA0KPC9zY3JpcHQ+DQo8L3RkPg0KPC90cj4NCjwvdGFibGU+DQoNClwNCg0KXA0KDQoNCiMgVGFibGVhdSBTdG9yeSBQb2ludHMNCkluIGFkZGl0aW9uIHRvIHRoZSBkZXRhaWxlZCBkYXNoYm9hcmQsIGEgY29tcGxlbWVudGFyeSBzdG9yeSBwb2ludCBoYXMgYmVlbiBjcmFmdGVkIHRvIHByb3ZpZGUgYSBndWlkZWQgbmFycmF0aXZlIGJhc2VkIG9uIHRoZSBwcmV2aW91cyBkYXNoYm9hcmQncyBpbnNpZ2h0cy4gRWFjaCB2aXN1YWwgc2hlZXQgd2l0aGluIHRoZSBzdG9yeSBwb2ludCBpcyBhY2NvbXBhbmllZCBieSBhIGJyaWVmIGNhcHRpb24sIG9mZmVyaW5nIGNvbnRleHQgYW5kIGhpZ2hsaWdodGluZyBrZXkgZmluZGluZ3MuIFRoaXMgYXBwcm9hY2ggZW5hYmxlcyB2aWV3ZXJzIHRvIGV4cGxvcmUgZWFjaCB2aXN1YWwgc2hlZXQgaW5kZXBlbmRlbnRseSwgYWxsb3dpbmcgdGhlbSB0byBkcmF3IHRoZWlyIG93biBjb25jbHVzaW9ucyBhbmQgaW5zaWdodHMgZnJvbSB0aGUgZGF0YSBwcmVzZW50ZWQuIFRocm91Z2ggdGhpcyBzdHJ1Y3R1cmVkIHN0b3J5dGVsbGluZyBhcHByb2FjaCwgdmlld2VycyBjYW4gZW5nYWdlIHdpdGggdGhlIGRhdGEgYXQgdGhlaXIgb3duIHBhY2UsIHVuY292ZXJpbmcgcGF0dGVybnMgdGFpbG9yZWQgdG8gdGhlaXIgaW50ZXJlc3RzIGFuZCBnb2Fscy4NCg0KXA0KDQo8dGFibGUgYm9yZGVyID0gMCBib3JkZXJjb2xvcj0iZGFya2dyZWVuIiBiZ2NvbG9yPScjZjZmNmY2JyAgd2lkdGg9MTEwJSAgYWxpZ24gPSBjZW50ZXI+DQo8dHI+DQo8dGQ+DQoNCjxkaXYgY2xhc3M9J3RhYmxlYXVQbGFjZWhvbGRlcicgaWQ9J3ZpejE3MTI3ODkwNjk4NDknIHN0eWxlPSdwb3NpdGlvbjogcmVsYXRpdmUnPjxub3NjcmlwdD48YSBocmVmPScjJz48aW1nIGFsdD0nTXVzaHJvb20gU3RvcnkgUG9pbnQgJyBzcmM9J2h0dHBzOiYjNDc7JiM0NztwdWJsaWMudGFibGVhdS5jb20mIzQ3O3N0YXRpYyYjNDc7aW1hZ2VzJiM0NztUYSYjNDc7VGFibGVhdVN0b3J5Qm9hcmRfMTcxMjc4OTA0NTg2NjAmIzQ3O1N0b3J5MSYjNDc7MV9yc3MucG5nJyBzdHlsZT0nYm9yZGVyOiBub25lJyAvPjwvYT48L25vc2NyaXB0PjxvYmplY3QgY2xhc3M9J3RhYmxlYXVWaXonICBzdHlsZT0nZGlzcGxheTpub25lOyc+PHBhcmFtIG5hbWU9J2hvc3RfdXJsJyB2YWx1ZT0naHR0cHMlM0ElMkYlMkZwdWJsaWMudGFibGVhdS5jb20lMkYnIC8+IDxwYXJhbSBuYW1lPSdlbWJlZF9jb2RlX3ZlcnNpb24nIHZhbHVlPSczJyAvPiA8cGFyYW0gbmFtZT0nc2l0ZV9yb290JyB2YWx1ZT0nJyAvPjxwYXJhbSBuYW1lPSduYW1lJyB2YWx1ZT0nVGFibGVhdVN0b3J5Qm9hcmRfMTcxMjc4OTA0NTg2NjAmIzQ3O1N0b3J5MScgLz48cGFyYW0gbmFtZT0ndGFicycgdmFsdWU9J25vJyAvPjxwYXJhbSBuYW1lPSd0b29sYmFyJyB2YWx1ZT0neWVzJyAvPjxwYXJhbSBuYW1lPSdzdGF0aWNfaW1hZ2UnIHZhbHVlPSdodHRwczomIzQ3OyYjNDc7cHVibGljLnRhYmxlYXUuY29tJiM0NztzdGF0aWMmIzQ3O2ltYWdlcyYjNDc7VGEmIzQ3O1RhYmxlYXVTdG9yeUJvYXJkXzE3MTI3ODkwNDU4NjYwJiM0NztTdG9yeTEmIzQ3OzEucG5nJyAvPiA8cGFyYW0gbmFtZT0nYW5pbWF0ZV90cmFuc2l0aW9uJyB2YWx1ZT0neWVzJyAvPjxwYXJhbSBuYW1lPSdkaXNwbGF5X3N0YXRpY19pbWFnZScgdmFsdWU9J3llcycgLz48cGFyYW0gbmFtZT0nZGlzcGxheV9zcGlubmVyJyB2YWx1ZT0neWVzJyAvPjxwYXJhbSBuYW1lPSdkaXNwbGF5X292ZXJsYXknIHZhbHVlPSd5ZXMnIC8+PHBhcmFtIG5hbWU9J2Rpc3BsYXlfY291bnQnIHZhbHVlPSd5ZXMnIC8+PHBhcmFtIG5hbWU9J2xhbmd1YWdlJyB2YWx1ZT0nZW4tVVMnIC8+PC9vYmplY3Q+PC9kaXY+ICAgICAgICAgICAgICAgIA0KPHNjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnPiAgICAgICAgICAgICAgICAgICAgdmFyIGRpdkVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndml6MTcxMjc4OTA2OTg0OScpOyAgICAgICAgICAgICAgICAgICAgdmFyIHZpekVsZW1lbnQgPSBkaXZFbGVtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdvYmplY3QnKVswXTsgICAgICAgICAgICAgICAgICAgIHZpekVsZW1lbnQuc3R5bGUud2lkdGg9JzEwMTZweCc7dml6RWxlbWVudC5zdHlsZS5oZWlnaHQ9Jzk5MXB4JzsgICAgICAgICAgICAgICAgICAgIHZhciBzY3JpcHRFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7ICAgICAgICAgICAgICAgICAgICBzY3JpcHRFbGVtZW50LnNyYyA9ICdodHRwczovL3B1YmxpYy50YWJsZWF1LmNvbS9qYXZhc2NyaXB0cy9hcGkvdml6X3YxLmpzJzsgICAgICAgICAgICAgICAgICAgIHZpekVsZW1lbnQucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoc2NyaXB0RWxlbWVudCwgdml6RWxlbWVudCk7ICAgICAgICAgICAgICAgIA0KPC9zY3JpcHQ+DQo8L3RkPg0KPC90cj4NCjwvdGFibGU+DQo=